home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 10
/
The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso
/
PC_SIGCD
/
09
/
2
/
DISK0921.ZIP
/
GLIDER.BAS
< prev
next >
Wrap
BASIC Source File
|
1987-09-29
|
8KB
|
278 lines
' PROGRAM "GLIDER"
' COPYRIGHT (C) 1982 BY DAVID EAGLE
' PUBLIC DOMAIN FOR IBM-PC ON AUGUST 20, 1986
' IBM-PC << QUICKBASIC COMPILER VERSION 3.0 >>
' DETERMINES MAXIMUM RANGE AND MAXIMUM ENDURANCE
' FLIGHT PERFORMANCE OF GLIDERS, SAILPLANES, ETC.
' GLIDE SPEED, METERS PER SECOND
' GLIDE ANGLE, DEGREES
' HORIZONTAL RANGE, METERS
' RATE-OF-DESCENT, METERS PER MINUTE
' LIFT-TO-DRAG RATIO, NON-DIMENSIONAL
'*********************************************************
DEFDBL A-Z
DEF FNA(X)=(1D0-2.2556913D-5*X)^4.256116D0
CONST PI=3.14159265D0
CONST RHOSL=1.22557D0
CONST GRAVITY=9.80665D0
CONST RTD=180D0/PI
CLS
PRINT
PRINT
PRINT "Program GLIDER"
PRINT "(C) Copyright 1982 by David Eagle"
PRINT
PRINT "Microsoft QuickBASIC Compiler"
PRINT "(C) Copyright Microsoft Corp. 1982-1987"
PRINT
CALL KEYCHECK
CLS
PRINT
PRINT
INPUT "Introduction ( y = yes, n = no ) ";A$
IF INSTR("yY",A$) THEN CALL INTRO
DO
CLS
PRINT
PRINT TAB(33);"Program GLIDER"
PRINT
PRINT
PRINT "Launch site altitude ( meters )"
INPUT ALTSITE
PRINT
PRINT "Launch site temperature ( degrees F )"
INPUT TEMPSITE
' DETERMINE LAUNCH SITE AMBIENT DENSITY
RHOSITE=RHOSL*FNA(ALTSITE)/(1D0+(TEMPSITE-59D0)/518.67D0)
' REQUEST USER INPUTS
PRINT
PRINT "Flight altitude ( meters )"
INPUT ALTITUDE
PRINT
PRINT "Wingspan ( centimeters )"
INPUT WINGSPAN
WINGSPAN=.01D0*WINGSPAN
PRINT
PRINT "Wing area ( square centimeters )"
INPUT WINGAREA
WINGAREA=.0001D0*WINGAREA
PRINT
PRINT "Mass ( grams )"
INPUT MASS
MASS=.001D0*MASS
PRINT
PRINT "Zero-lift drag coefficient ( non-dimensional )"
INPUT CD0
PRINT
PRINT "Efficieny factor ( non-dimensional )"
INPUT EFACTOR
' COMPUTE ASPECT RATIO, EFFICIENCY PARAMETER, DENSITY AND WEIGHT
ASPECT=WINGSPAN*WINGSPAN/WINGAREA
K1=PI*ASPECT*EFACTOR
RHO=RHOSITE*FNA(ALTITUDE)
WEIGHT=GRAVITY*MASS
' DETERMINE MAXIMUM RANGE FLIGHT CONDITIONS
LIFT1=SQR(CD0*K1)
DRAG1=2D0*CD0
GANGLE1=ATN(DRAG1/LIFT1)
GSPEED1=SQR(2D0*WEIGHT*COS(GANGLE1)/(RHO*WINGAREA*LIFT1))
ROD1=GSPEED1*SIN(GANGLE1)
RANGE1=ALTITUDE/TAN(GANGLE1)
' DETERMINE MAXIMUM ENDURANCE FLIGHT CONDITIONS
LIFT2=SQR(3D0*K1*CD0)
DRAG2=4D0*CD0
GANGLE2=ATN(DRAG2/LIFT2)
GSPEED2=SQR(2D0*WEIGHT*COS(GANGLE2)/(RHO*WINGAREA*LIFT2))
ROD2=GSPEED2*SIN(GANGLE2)
RANGE2=ALTITUDE/TAN(GANGLE2)
' PRINT RESULTS
CLS
PRINT
PRINT
PRINT TAB(25);"MAXIMUM RANGE GLIDE CONDITIONS"
PRINT
PRINT
CALL PDATA(GANGLE1,GSPEED1,ROD1,RANGE1,LIFT1,DRAG1)
CLS
PRINT
PRINT
PRINT TAB(23);"MAXIMUM ENDURANCE GLIDE CONDITIONS"
PRINT
PRINT
CALL PDATA(GANGLE2,GSPEED2,ROD2,RANGE2,LIFT2,DRAG2)
CLS
PRINT
PRINT
INPUT "Another selection ( y = yes, n = no ) ";A$
IF INSTR("nN",A$) THEN EXIT DO
LOOP
END
'*********************************************************
SUB PDATA(GANGLE,GSPEED,ROD,RANGE,LIFT,DRAG) STATIC
' PRINT SUBROUTINE
FORMAT$="#######.####"
PRINT
PRINT TAB(5);"Glide speed ( meters per second )";
PRINT USING FORMAT$;TAB(55);GSPEED
PRINT
PRINT TAB(5);"Glide angle ( degrees )";
PRINT USING FORMAT$;TAB(55);GANGLE*RTD
PRINT
PRINT
PRINT TAB(5);"Horizontal range ( meters )";
PRINT USING FORMAT$;TAB(55);RANGE
PRINT
PRINT TAB(5);"Rate-of-descent ( meters per minutes )";
PRINT USING FORMAT$;TAB(55);60D0*ROD
PRINT
PRINT
PRINT TAB(5);"Lift-to-Drag ratio ( non-dimensional )";
PRINT USING FORMAT$;TAB(55);LIFT/DRAG
PRINT
CALL KEYCHECK
END SUB
'*********************************************************
SUB INTRO STATIC
' DOCUMENTATION SUBROUTINE
CLS
PRINT
PRINT
PRINT " PROGRAM 'GLIDER' IS AN INTERACTIVE BASIC COMPUTER PROGRAM WHICH CAN BE USED";
PRINT "TO DETERMINE BOTH THE MAXIMUM RANGE AND MAXIMUM ENDURANCE FLIGHT CONDITIONS FOR";
PRINT "MODEL ROCKET BOOST GLIDERS. THESE ARE THE FLIGHT CONDITIONS WHEN THE GLIDER";
PRINT "WILL FLY THE FARTHEST OR STAY IN THE AIR THE LONGEST TIME. THE 'GLIDER' SOFTWARE";
PRINT "COMPENSATES FOR THE VARIATION IN DENSITY AT THE INITIAL GLIDE ALTITUDE AND 'NON-";
PRINT "STANDARD' FLYING CONDITIONS SUCH AS HOT OR COLD DAYS OR FLYING SITES WHICH ARE";
PRINT "NOT AT SEA LEVEL. THESE UNIQUE FEATURES WILL PROVIDE THE USER WITH AN ACCURATE";
PRINT "PREDICTION OF THE MOTION OF GLIDERS."
PRINT
PRINT " PROGRAM 'GLIDER' WILL PROMPT THE USER FOR SEVERAL INPUTS NECESSARY FOR THE";
PRINT "SOFTWARE TO WORK PROPERLY. THIS IS A DESCRIPTION OF THESE REQUESTS AND A SHORT";
PRINT "DISCUSSION OF HOW THE USER SHOULD RESPOND.";
CALL KEYCHECK
CLS
PRINT
PRINT " LAUNCH SITE ALTITUDE ( METERS )"
PRINT
PRINT "THE USER RESPONSE SHOULD BE THE ALTITUDE AT THE FLYING SITE IN METERS. FLYING";
PRINT "SITES ABOVE SEA LEVEL ARE POSITIVE AND THOSE BELOW SEA LEVEL ARE NEGATIVE."
PRINT
PRINT " LAUNCH SITE TEMPERATURE ( DEGREES F )"
PRINT
PRINT "THE RESPONSE TO THIS REQUEST SHOULD BE THE TEMPERATURE AT THE FLYING SITE IN";
PRINT "DEGREES FAHRENHEIT."
PRINT
PRINT " FLIGHT ALTITUDE ( METERS )"
PRINT
PRINT "AT THIS POINT THE USER SHOULD INPUT THE INITIAL FLIGHT ALTITUDE OF THE GLIDER IN";
PRINT "METERS. THIS IS THE ALTITUDE ABOVE THE FLYING SITE WHEN THE GLIDE BEGINS."
PRINT
PRINT " WINGSPAN ( CENTIMETERS )"
PRINT
PRINT "THE USER SHOULD RESPOND WITH THE WINGSPAN OF THE GLIDER IN CENTIMETERS. THIS";
PRINT "IS THE DISTANCE FROM WINGTIP TO WINGTIP."
CALL KEYCHECK
CLS
PRINT
PRINT " WING AREA ( SQUARE CENTIMETERS )"
PRINT
PRINT "THE USER SHOULD INPUT THE WING AREA OF THE GLIDER IN SQUARE CENTIMETERS."
PRINT
PRINT " MASS ( GRAMS )"
PRINT
PRINT "THE RESPONSE TO THIS REQUEST SHOULD BE THE MASS OF THE GLIDER IN GRAMS."
PRINT
PRINT " ZERO-LIFT DRAG COEFFICIENT ( NON-DIMENSIONAL )"
PRINT
PRINT "THE USER SHOULD INPUT THE 'NO-LIFT' DRAG COEFFICIENT. THIS IS THE PLANFORM DRAG";
PRINT "COEFFICIENT WHICH IS USUALLY DETERMINED FROM WIND TUNNEL TESTS. TYPICAL VALUES";
PRINT "RANGE FROM .01 TO .05."
PRINT
PRINT " EFFICIENCY FACTOR ( NON-DIMENSIONAL )"
PRINT
PRINT "THIS IS A NON-DIMENSIONAL NUMBER WHICH MUST BE DETERMINED FROM WIND TUNNEL TEST";
PRINT "OR ESTIMATED NUMERICALLY. TYPICAL VALUES RANGE FROM .6 TO .9."
PRINT
CALL KEYCHECK
CLS
PRINT
PRINT
PRINT " AFTER THE PROGRAM HAS RUN, IT WILL ASK THE USER FOR ANOTHER SELECTION. THE";
PRINT "USER SHOULD RESPOND WITH 'Y' IF HE OR SHE DESIRES THE SELECTION OR 'N' IF NOT."
PRINT
PRINT " ANOTHER SELECTION ( Y = YES, N = NO ) ?"
PRINT
PRINT "THE USER SHOULD RESPOND WITH 'N' TO EXIT THE PROGRAM."
PRINT
CALL KEYCHECK
CLS
PRINT
PRINT " PROGRAM 'GLIDER' OUTPUTS DATA ABOUT BOTH THE MAXIMUM RANGE AND MAXIMUM";
PRINT "ENDURANCE FLIGHT CONDITIONS OF THE BOOST GLIDER. THIS INFORMATION INCLUDES THE";
PRINT "GLIDE SPEED AND ANGLE, THE HORIZONTAL RANGE AND RATE-OF-DESCENT AND THE GLIDER";
PRINT "LIFT-TO-DRAG RATIO. THE GLIDE SPEED IS PRINTED IN METERS PER SECOND AND THE";
PRINT "RATE-OF-DESCENT IS IN METERS PER MINUTE. THE HORIZONTAL RANGE IS GIVEN IN METERS";
PRINT "AND THE GLIDE ANGLE IS IN DEGREES. THE LIFT-TO-DRAG RATIO IS NON-DIMENSIONAL."
PRINT
PRINT " FOR USERS WHO MAY WANT TO SEE OTHER VARIABLES COMPUTED BY THE SOFTWARE,";
PRINT "'RHOSITE' IS THE AMBIENT DENSITY AT THE FLYING SITE AND 'RHO' IS THE DENSITY";
PRINT "AT THE INITIAL FLIGHT ALTITUDE. THE ASPECT RATIO OF THE GLIDER IS COMPUTED IN";
PRINT "THE VARIABLE 'ASPECT'.";
CALL KEYCHECK
END SUB
'*********************************************************
SUB KEYCHECK STATIC
' CHECK USER RESPONSE SUBROUTINE
PRINT
PRINT
PRINT TAB(25);"< press any key to continue >"
A$=""
WHILE A$=""
A$=INKEY$
WEND
END SUB